package com.xyz.update.net

import com.xyz.update.bean.Base
import com.xyz.update.bean.VersionInfo
import com.xyz.update.bean.VersionInfoV2
import okhttp3.RequestBody
import okhttp3.ResponseBody
import retrofit2.Call
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.POST
import retrofit2.http.Query
import retrofit2.http.Streaming
import retrofit2.http.Url

/**
 * 实例化网络请求
 * hostUrl 域名, 默认ZjConfig.base_url，需要修改传入新的域名（新的每次都传）
 */
fun apiService(hostUrl: String): Api =
    RetrofitManager.apiService(Api::class.java, hostUrl)

interface Api {

    //获取最新版本的信息
    @POST
    fun versionIsUpdateV2(
        @Url url: String, @Body body: RequestBody,
        @Header("AuthorizationApp") token: String, @Header("deviceId") deviceId: String,
    ): Call<Base<VersionInfoV2>>

    //获取最新版本的信息
    @POST
    fun versionIsUpdateV2(@Url url: String, @Body body: RequestBody): Call<Base<VersionInfoV2>>

    //获取最新版本的信息
    @GET("api/xy-system/anonymous/versionIsUpdate")
    fun versionIsUpdate(
        @Query("fileType") fileType: Int,  //1, "APK"；2, "IPA"，3, "轻量包
        @Query("versionNum") versionNum: String?,  //版本号
        @Query("sysType") sysType: Int, //1, "安卓"，2, "ios"
        @Query("moduleId") moduleId: String, //模块id
    ): Call<Base<VersionInfo>>

    //获取文件下载地址
    @GET("api/xy-system/anonymous/getFileResourcesUrl")
    fun getFileResourcesUrl(
        @Query("fileType") fileType: Int,  //1, "APK"；2, "IPA"，3, "轻量包
        @Query("versionNum") versionNum: String?,  //版本号
        @Query("sysType") sysType: Int, //1, "安卓"，2, "ios"
        @Query("moduleId") moduleId: String, //模块id
    ): Call<Base<String>>

    @Streaming
    @GET
    fun download(@Url downloadUrl: String): Call<ResponseBody>
}